﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using BLL;
using Exceptions;

namespace WCF
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "WCFTipoTransporte" in code, svc and config file together.
    public class WCFTipoTransporte : IWCFTipoTransporte
    {
        public List<DTO.TipoTransporte> list()
        {
            BLLTipoTransporte bllTipoTransporte = new BLLTipoTransporte();
            List<BTO.TipoTransporte> btoTipoTransportes = bllTipoTransporte.list();
            List<DTO.TipoTransporte> dtoTipoTransportes = new List<DTO.TipoTransporte>();
            DTO.TipoTransporte dtoTipoTransporte;

            foreach (BTO.TipoTransporte btoTipoTransporte in btoTipoTransportes)
            {
                dtoTipoTransporte = new DTO.TipoTransporte();
                dtoTipoTransporte.IDTipoTransporte = btoTipoTransporte.IDTipoTransporte;
                dtoTipoTransporte.descricao = btoTipoTransporte.descricao;

                dtoTipoTransportes.Add(dtoTipoTransporte);
            }

            return dtoTipoTransportes;
        }

        public DTO.TipoTransporte getByID(int id)
        {
            BLLTipoTransporte bllTipoTransporte = new BLLTipoTransporte();
            DTO.TipoTransporte dtoTipoTransporte;

            try
            {
                BTO.TipoTransporte TipoTransporte = bllTipoTransporte.getByID(id);

                dtoTipoTransporte = new DTO.TipoTransporte();
                dtoTipoTransporte.IDTipoTransporte = TipoTransporte.IDTipoTransporte;
                dtoTipoTransporte.descricao = TipoTransporte.descricao;

            }
            catch (NotFoundTipoTransporteException e)
            {
                throw new NotFoundTipoTransporteException(e.Message);
            }
            catch (Exception)
            {
                throw new Exception("Tipo de transporte não encontrado!");
            }

            return dtoTipoTransporte;
        }
    }
}
